import { loginAPI } from '@/apis/user'
import { getToken, setToken, removeToken } from '@/utils/auth'

export default {
  namespaced: true,
  state: {
    // vuex 是保存在内存中的变量，刷新后此代码重新执行，所以你的赋予什么初始值就是什么
    token: getToken() || ''
  },
  mutations: {
    setToken(state, payload) {
      state.token = payload
      setToken(payload) // 设置token到本地cookie中（磁盘）
    },
    removeToken(state) {
      state.token = ''
      removeToken()
    }
  },
  actions: {
    // 登录的流程可以全局使用（这里离 user 模块比较近）
    // store 是个对象，{commit}相当于第一个参数 store 对象进行了ES6对象解构赋值，只取 commit 这个 store 中对象的方法直接用
    async loginActions({ commit }, data) {
      const res = await loginAPI(data)
      console.log(res)
      commit('setToken', res.data.token)
    }
  },
  getters: {

  }
}
